package com.tgu.service;

import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tgu.entity.model.OrdersEntity;
import com.tgu.entity.request.OrderReq;
import com.tgu.entity.request.TakeOrderReq;
import com.tgu.entity.request.UserCancelReq;
import com.tgu.utils.result.Result;


public interface IOrdersService extends IService<OrdersEntity> {

    /**
     * 根据订单实体发布订单
     *
     * @param order
     * @return
     */
    Result postOrderByEntity(OrderReq order);

    /**
     * 分页查询市场的所有订单
     *
     * @param pageNumb
     * @return
     */
    Result getMarketPage(Integer pageNumb, Integer option1, String option2);

    /**
     * 根据用户id获取一般订单
     *
     * @param id
     * @return
     */
    Result getByPerson(String id);

    /**
     * 根据所需id抢一个订单
     *
     * @param takeOrderReq
     * @return
     */
    Result takeOrderOne(TakeOrderReq takeOrderReq);

    /**
     * 根据骑手的id获取该骑手的所有配送订单
     *
     * @param id
     * @return
     */
    Result getByRider(String id);

    /**
     * 根据订单id获取订单详情信息
     * @param takeOrderReq
     * @return
     */
    Result getOrderById(TakeOrderReq takeOrderReq);

    /**
     * 骑手根据订单id完成订单
     * @param takeOrderReq
     * @return
     */
    Result finishOrder(TakeOrderReq takeOrderReq);

    /**
     * 根据订单id取消订单（普通用户）
     */
    Result userCancelOrder(UserCancelReq cancelReq);

    /**
     * 根据订单id放弃订单（骑手）
     */
    Result riderAbandonOrder(UserCancelReq cancelReq);
}

